/**
 * 通用方法
 */

/**
 * 遍历判断必填项
 * @param {*} keyObj 必填项
 * @param {*} content 数据
 */
function isRequire(keyObj, content) {
    let flag = true;
    for (const key in keyObj) {
        if (Object.hasOwnProperty.call(keyObj, key)) {
            if(!content[key]){
                console.log(`${key}为必填项`);
                flag = false;
            }
        }
    }
    return flag;
}
// 判断值是否为空
function isValueEmpty(value) {
    // null 或 undefined
    if (value == null) return true;
  
    // 空字符串（包括纯空格）
    if (typeof value === 'string') {
      return value.trim() === '';
    }
  
    // 空数组
    if (Array.isArray(value)) {
      return value.length === 0;
    }
  
    // 空对象（仅限普通对象，排除其他对象如 Date）
    if (typeof value === 'object' && value.constructor === Object) {
      return Object.keys(value).length === 0;
    }
  
    // 其他类型视为非空（如数字、布尔值、函数等）
    return false;
}

// 判断对象是否为空
function isAllKeysEmpty(obj) {
    // 处理 null 或 undefined 直接返回 true
    if (obj == null) return true;

    const keys = Object.keys(obj);
    // 空对象（无属性）直接返回 true
    if (keys.length === 0) return true;

    // 遍历所有属性
    for (const key of keys) {
        const value = obj[key];
        if (!isValueEmpty(value)) {
        return false;
        }
    }
    return true;
}

module.exports = { isRequire, isAllKeysEmpty }